/*
 * Copyright (C) 2012 POAS.VSTU
 */

package ui;


import model.Card;

import javax.swing.JLabel;
import java.awt.Point;
import java.awt.Rectangle;

/**
 * Карта как графический элемент.
 */
public class UICard {

    /** Виджет (метка), которым реализуется представление карты */
    private JLabel      mLabel;
    
    /** Модель карты, с которой связано данное представление */
    private Card        mCardModel;
    
    /** Отображается лицевой стороной */
    private boolean     mFaceUp  = true;

    /** Ориентация */
    private Orientation mOrientation = Orientation.NORMAL;
  
     /**
     * Конструктор.
     * @param card модель карты.
     */
    public UICard(Card card) {
        mCardModel = card;
    }
    
    /** Повернуть карту лицом вверх. */
    public void turnFaceUp() {
        mFaceUp = true;
    }
    
    /** Повернуть карту лицом вниз. */
    public void turnFaceDown() {
        mFaceUp = false;
    }
    
    /** Карта отображается лицевой стороной */
    public boolean isFaceUp() {
        return mFaceUp;
    }

    /** Карта отображается рубашкой */
    public boolean isFaceDown() {
        return !mFaceUp;
    }
    
    /** Ориентация карты */
    public Orientation getOrientation() {
        return mOrientation;
    }
    
    /** Задать ориентацию карты */
    public void  setOrientation(Orientation orientation) {
        
    }
    
    /** 
     * Повернуть карту.
     * @param steps кол-во поворотов в шагах. Один шаг соответствует повороту на
     * 90 градусов. Положительные значения соответствуют повороту по часовой стрелке,
     * отрицательные - против часовой стрелки.
     */
    public void  rotate(int steps) {
        
    }
    
    /** Позиция */
    public Point getLocation() {
        return new Point();
    }

    /** Задать позицию */
    public void setLocation(Point p) {

    }
    
    /** Границы карты */
    public Rectangle getBounds() {
        return new Rectangle();
    }
    
    /**
     * Перемещает карту на заданное смещение.
     * @param dx смещение по горизонтали
     * @param dy смещение по вертикали
     */
    public void move(int dx, int dy) {
       
    } 
  }
